package com.cmc.cloud.cmclink.doc.convert;

import com.cmc.cloud.cmclink.doc.api.document.req.so.SoScnUpdateReqDto;
import com.cmc.cloud.cmclink.doc.entity.SoScnDO;
import com.cmc.cloud.cmclink.doc.mq.SoEdiReqVO;
import com.cmc.cloud.cmclink.doc.vo.sovo.soscnvo.SoScnCreateReqVO;
import com.cmc.cloud.cmclink.doc.vo.sovo.soscnvo.SoScnRespVO;
import com.cmc.cloud.cmclink.doc.vo.sovo.soscnvo.SoScnUpdateReqVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 订舱相关方信息 Convert
 *
 * @author 招商轮船-管理员
 */
@Mapper
public interface SoScnConvert {

    SoScnConvert INSTANCE = Mappers.getMapper(SoScnConvert.class);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return SoScnDO
     */
    SoScnDO convert(SoScnRespVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return SoScnDO
     */
    SoScnDO convert(SoScnCreateReqVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return SoScnDO
     */
    SoScnDO convert(SoScnUpdateReqVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return SoScnRespVO
     */
    SoScnRespVO convert(SoScnDO bean);

    /**
     * 属性转换 convert
     *
     * @param list bean
     * @return SoScnRespVO
     */
    List<SoScnRespVO> convertList(List<SoScnDO> list);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return SoScnCreateReqVO
     */
    SoScnCreateReqVO convertCreate(SoScnDO bean);

    /**
     * 属性转换
     *
     * @param soScnUpdateReqDto bean
     * @return SoScnUpdateReqVO
     */
    SoScnUpdateReqVO convertSoScnUpdateReqDto(SoScnUpdateReqDto soScnUpdateReqDto);

    /**
     * EDI属性转换
     * @param data data
     * @return SoScnUpdateReqVO
     */
    SoScnUpdateReqVO convertSoScnUpdateReqDto(SoEdiReqVO.Scn data);

    /**
     * 属性转换
     *
     * @param soScnDO bean
     * @return SoScnUpdateReqVO
     */
    SoScnUpdateReqDto convertSoScnUpdateReqDto(SoScnDO soScnDO);
}
